﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using MoviTiendas.Logica;
using System.Windows.Media.Imaging;

namespace MoviTiendas.Interfaz
{
    public partial class PaginaInfoItem : PhoneApplicationPage
    {
        // ------------------------------------------------------------------------------------
        // Atributos
        // ------------------------------------------------------------------------------------

        /**
         * Item escogido en PaginaItems
         */
        public Item item { get; set; }


        // ------------------------------------------------------------------------------------
        // Constructor
        // ------------------------------------------------------------------------------------

        /**
         * Constructor de la clase
         */
        public PaginaInfoItem()
        {
            InitializeComponent();
            item = ParametroPaginas.darParametroConIndice(0) as Item;
            String pagina = ParametroPaginas.darParametroConIndice(1) as String;
            if (pagina.Equals("MoviTiendas.Interfaz.PaginaInfoLista"))
                btnAgregarALista.Visibility = Visibility.Collapsed;

            //item.cantidad = item.;
            lblNombreProducto.Text = item.producto.nombre;
            lblCostoUnidad.Text = item.precioUnitario.ToString();
            lblNombreTienda.Text = item.tienda.nombre;
            lblCantidad.Text = item.cantidad + "";
            lblCostoTotal.Text = (item.precioUnitario * Convert.ToInt16(lblCantidad.Text)).ToString();

            WebClient webClientImgDownloader = new WebClient();
            webClientImgDownloader.OpenReadCompleted += new OpenReadCompletedEventHandler(webClientImgDownloader_OpenReadCompleted);
            webClientImgDownloader.OpenReadAsync(new Uri(item.producto.imagen, UriKind.Absolute));
        }


        // ------------------------------------------------------------------------------------
        // Métodos generales
        // ------------------------------------------------------------------------------------

        private void webClientImgDownloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                BitmapImage bitmap = new BitmapImage();
                bitmap.SetSource(e.Result);
                imgProducto.Source = bitmap;
            }
        }

        // ------------------------------------------------------------------------------------
        // Métodos manejadores de eventos
        // ------------------------------------------------------------------------------------

        /**
         * Maneja el evento en el que se oprime el botón btnAgregarALista
         * @sender - Objeto que envía el evento
         * @e - Evento
         */
        private void btnAgregarALista_Click(object sender, RoutedEventArgs e)
        {
            ParametroPaginas.reiniciarParametros("PaginaEscogerLista");
            Item i = item.darCopia();
            i.cantidad = Convert.ToInt16(lblCantidad.Text);
            ParametroPaginas.agregarParametro(item);

            NavigationService.Navigate(new Uri("/Interfaz/PaginaEscogerLista.xaml", UriKind.RelativeOrAbsolute));
        }

        /**
         * Maneja el evento en el que se oprime el botón btnAgregarACarrito
         * @sender - Objeto que envía el evento
         * @e - Evento
         */
        private void btnAgregarACarrito_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("El ítem ha sido agregado al carrito de compras","Ítem nuevo",MessageBoxButton.OK);
            MoviTienda.darInstancia.cliente.agregarItemACarrito(item);
        }

        /**
         * Maneja el evento en el que se oprime el botón btnMenos
         * @sender - Objeto que envía el evento
         * @e - Evento
         */
        private void btnMenos_Click(object sender, RoutedEventArgs e)
        {
            if (Convert.ToInt16(lblCantidad.Text) > 1 && Convert.ToInt16(lblCantidad.Text) <= 20)
            {
                item.cantidad--;
                lblCantidad.Text = (Convert.ToInt16(lblCantidad.Text) - 1).ToString();
                lblCostoTotal.Text = (item.precioUnitario * Convert.ToInt16(lblCantidad.Text)).ToString();
            }      
        }

        /**
         * Maneja el evento en el que se oprime el botón btnMas
         * @sender - Objeto que envía el evento
         * @e - Evento
         */
        private void btnMas_Click(object sender, RoutedEventArgs e)
        {
            if (Convert.ToInt16(lblCantidad.Text) >= 1 && Convert.ToInt16(lblCantidad.Text) < 20)
            {
                item.cantidad++;
                lblCantidad.Text = (Convert.ToInt16(lblCantidad.Text) + 1).ToString();
                lblCostoTotal.Text = (item.precioUnitario * Convert.ToInt16(lblCantidad.Text)).ToString();
            }               
        }

    }
}